// Copyright 2022 Hollson. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.

package leetcode1

import (
	"fmt"
)

// 题目：有一对兔子，从出生后第3个月起每个月都生一对兔子，小兔子长到第三个月后每个月又生一对兔子，
//  假如兔子都不死，问每个月的兔子总数为多少？
//  分析：兔子问题即斐波那契序列问题，可循环或递归实现
//  循环方式
func fibonacciWithLoop() {
	var f1, f2 int = 1, 1
	var i int
	for i = 1; i <= 10; i++ {
		fmt.Printf("%12d %12d", f1, f2)
		if i%2 == 0 {
			fmt.Printf("\n")
		}
		f1 = f1 + f2 /*前两个月加起来赋值给第三个月*/
		f2 = f1 + f2
	}
}

// 递归方式
//  性能极差，42+就开始妙级的性能消耗了
func fibonacciWithRecursion(num int) int {
	if num < 3 {
		return 1
	}
	return fibonacciWithRecursion(num-1) + fibonacciWithRecursion(num-2)
}
